Категории: IT-технологии

Использование класса SPL ArrayCallbackIterator

Этот итератор позволяет сбрасывать и модифицировать значения и ключи в процессе итерации по массивам и объектам.
Когда вы хотите перебрать некоторый массив несколько раз, вы должны создать экземпляр ArrayObject и позволить ему создать экземпляр ArrayIterator, ссылающийся на него при использовании foreach, или при вызове метода getIterator() вручную.

class ArrayCallbackIterator extends ArrayIterator {
  private $callback;
  public function __construct($value, $callback) {
    parent::__construct($value);
    $this->callback = $callback;
  }
  public function current() {
    $value = parent::current();
    return call_user_func($this->callback, $value);
  }
}

Интересное наблюдение

При покупке компьютера:
— Дизайнер в первую очередь смотрит на диагональ монитора
— Айтишник на скорость процессора и рамку
— Менеджер на видеокарту (чтобы игры шли)
— Бухгалтеру пофиг, главное чтобы кресло было удобным
— Топ менеджер на дизайн и респектабельность
— Секретарша тупо радуется, что ей покупают компьютер…